# _*_ coding:utf-8 _*_
# 开发团队: Mavericks
# 开发人员：Maverick·Ming
# 开发IDE： PyCharm
#   项目名：HelloWorld
#   文件名：7.03 抛出异常.py
# 开发时间：2021/3/29 0:04

# 抛出异常的案例
# 可以自定义异常类，只需要创建一个类继承Exception即可
class MyError(Exception):
    pass


def add(a, b):
    # 如果a，b中存在负数，抛出异常
    if a < 0 or b < 0:
        # raise用于向外抛出异常,其后可以跟异常类，或异常类实例
        # raise Exception
        # 目的：告诉调用者，此处异常原因，需要处理
        # 问题严重时，强制性抛异常，停止运行，强制调用者处理异常
        raise Exception('两个参数中不得有负数')
        # raise MyError

    # 也可以通过if-else代替异常处理，不做抛出，直接返回None
    # 但是if只能处理一种情况，如果多种情况要写多个if语句，会变得很复杂
    # if a < 0 or b < 0:
    #     return None
    r = a + b
    return r


print(add(1, 99))
print(add(-1, 99))
# 结果：
#     Traceback (most recent call last):
#       File "D:/PycharmProjects/HelloWorld/lesson07异常与文件/7.03 抛出异常.py", line 19, in <module>
#         print(add(-1, 99))
#       File "D:/PycharmProjects/HelloWorld/lesson07异常与文件/7.03 抛出异常.py", line 13, in add
#         raise Exception('两个参数中不得有负数')
#     Exception
#     100
